var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var cors = require('cors');

const { API_URL, verifyToken } = require('./utils/config')

var indexRouter = require('./routes/index');
var listRouter = require('./routes/list');
var detailRouter = require('./routes/detail');
var loginRouter = require('./routes/login');
var personcenterRouter = require('./routes/personcetner');

var app = express();

//解决跨域
app.use(cors())

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

//开放静态资源的uploads文件夹
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));

app.use('/api', indexRouter);
app.use('/api', listRouter);
app.use('/api', loginRouter);
app.use('/api', detailRouter);


//路由的特点有前后顺序 ,需要验证登录的接口，就写在此中间件的下面，不验证的写上面
app.use(function(req, res, next) {
    let token = req.headers.authorization
        //验证这个token是否有效，如果验证的为false则代表过期，或者说未登录
        // res.send('在这里要统一验证token');
        // return;
        // res.send( verifyToken( token ) )
    if (!verifyToken(token)) {
        let data = {
            msg: '请登录或token无效',
            status: 500
        }
        res.send(data)
        return
    }
    next() //验证通过代表token有效。
})
app.use('/api', personcenterRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    //next(createError(404));
    res.send('404错误')
});

// error handler
app.use(function(err, req, res, next) {
    // set locals, only providing error in development
    // res.locals.message = err.message;
    // res.locals.error = req.app.get('env') === 'development' ? err : {};

    // // render the error page
    // res.status(err.status || 500);
    // res.render('error');
    res.send('500错误')
});

module.exports = app;